package com.beiming.libra.service;

import com.beiming.libra.common.page.PageResult;
import com.beiming.libra.domain.dto.requestdto.UserRelationRequestDTO;
import com.beiming.libra.domain.dto.requestdto.UserRequestDTO;
import com.beiming.libra.domain.dto.responsedto.UserProxyResponseDTO;
import com.beiming.libra.domain.dto.responsedto.UserRelationResponseDTO;
import java.util.List;
import java.util.Map;

/**
 * @author Rimon Date : 2018/6/5 11:27
 */
public interface UserRelationService {

  /**
   * @param userId 用户id
   * @return UserRelationResponseDTO 当事人列表
   */
  List<UserRelationResponseDTO> getUserRelations(String userId);

  /**
   *
   * @param userId 用户id
   * @param pageSize 每页显示数
   * @param pageNo 页码
   * @return
   */
  PageResult<UserRelationResponseDTO> listParty(String userId, int pageSize, int pageNo);

  /**
   * 获取关联人列表
   */
  PageResult<UserRelationResponseDTO> listRelation(UserRequestDTO userRequestDTO);

  /**
   * 获取当事人详细数据
   */
  UserRelationResponseDTO getUserRelationDetail(String id);

  /**
   * @param userId 用户id
   * @return UserRelationResponseDTO 关联机构列表
   */
  List<UserRelationResponseDTO> getOrganizationRelations(String userId);

  /**
   * @param userId 用户id
   * @return UserRelationResponseDTO 关联用户和关联机构列表
   */
  List<UserRelationResponseDTO> getAllRelations(String userId);

  /**
   * 删除当事人关联
   * @param id
   */
  void delete(String id);

  /**
   * 新增当事人
   */
  public void insertParty(UserRelationRequestDTO userRelationRequestDTO, String userId);

  /**
   * 当事人信息修改
   */
  public void updateParty(UserRelationRequestDTO userRelationRequestDTO);

  /**
   * 自然人手机号更新
   * @param mobilePhone
   * @param id
   */
  void updateMobilePhone(String mobilePhone, String id, String phoneCode);

  /**
   * 自然人邮箱更新
   * @param email
   * @param id
   */
  void updateEmail(String email, String id, String emailCode);

  /**
   * 手机号码修改获取验证码
   * @param mobilePhone
   * @return
   */
  String getPhoneCode(String mobilePhone);

  /**
   * 邮件送达修改获取验证码
   * @param email
   * @return
   */
  String getEmailCode(String email);

  /**
   * @param userId 用户id
   * @return UserRelationResponseDTO 未分页代理资质列表
   */
  List<UserProxyResponseDTO> getUserProxy(String userId);

  /**
   * 基础信息修改
   */
  public void updateUserBasic(UserRequestDTO userRequestDTO);

  /**
   * 获取当事人类型数据
   */
  List<Map<String, Object>> getPartyType();

  /**
   * 个人实名认证
   */
  void realNameVerify(String userId, String userName, String code);

}
